package com.ruoyi.common.core.utils;

import java.math.BigDecimal;
import java.math.RoundingMode;

public class CalculatedValueUtil {
    //加法
    public static float additionfloat(String st1,String st2){
        BigDecimal bd1 =new BigDecimal(st1);
        BigDecimal bd2 =new BigDecimal(st2);
        BigDecimal bignum3=bd1.add(bd2);
        return  bignum3.floatValue();
    }
    //加法
    public static BigDecimal additionDecimal(BigDecimal st1,BigDecimal st2){
        BigDecimal bignum3=st1.add(st2);
        return  bignum3;
    }
    //加法
    public static String additionstring(String st1,String st2){
        BigDecimal bd1 =new BigDecimal(st1);
        BigDecimal bd2 =new BigDecimal(st2);
        BigDecimal bignum3=bd1.add(bd2);
        return  bignum3.toString();
    }
    //减法
    public static float subtractionfloat(String st1,String st2){
        BigDecimal bd1 =new BigDecimal(st1);
        BigDecimal bd2 =new BigDecimal(st2);
        BigDecimal bignum3=bd1.subtract(bd2);
        return  bignum3.floatValue();
    }

    public static BigDecimal subtractionBigDecimal(BigDecimal st1,BigDecimal st2){
        if(null==st1)st1=new BigDecimal(0);
        if(null==st2)st2=new BigDecimal(0);
        BigDecimal bignum3=st1.subtract(st2);
        return bignum3.setScale(2,BigDecimal.ROUND_HALF_UP);

    }
    //减法
    public static String subtractionString(String st1,String st2){
        BigDecimal bd1 =new BigDecimal(st1);
        BigDecimal bd2 =new BigDecimal(st2);
        BigDecimal bignum3=bd1.subtract(bd2);
        return  bignum3.toString();
    }
    //乘法
    public static float multiplicationfloat(String st1,String st2){
        BigDecimal bd1 =new BigDecimal(st1);
        BigDecimal bd2 =new BigDecimal(st2);
        BigDecimal bignum3 = bd1.multiply(bd2);
        return  bignum3.floatValue();
    }

    //乘法
    public static String multiplicationString(String st1,String st2){
        BigDecimal bd1 =new BigDecimal(st1);
        BigDecimal bd2 =new BigDecimal(st2);
        BigDecimal bignum3 = bd1.multiply(bd2);
        return  bignum3.setScale(2,BigDecimal.ROUND_HALF_UP).toString();
    }

    public static BigDecimal multiplyB(BigDecimal b1, BigDecimal b2){
        BigDecimal bignum3 = b1.multiply(b2);
        return bignum3.setScale(2, RoundingMode.HALF_UP);
    }

    public static BigDecimal multiplication(BigDecimal st1,Integer st2){


        BigDecimal result = st1.multiply(new BigDecimal(st2));


        return  result.setScale(2,BigDecimal.ROUND_HALF_UP);
    }

    public static BigDecimal divisionFloat(BigDecimal st1, BigDecimal st2){

        BigDecimal result = st1.multiply(st2);

        return  result.setScale(2, RoundingMode.HALF_UP);
    }


    public static BigDecimal division(BigDecimal bd1, BigDecimal bd2){

        BigDecimal bignum3 = bd1.divide(bd2, 2, BigDecimal.ROUND_HALF_UP);
        return bignum3;
    }

    //除法(截断，小数不要)
    public static float divisionFloat(String st1,String st2){
        BigDecimal bd1 =new BigDecimal(st1);
        BigDecimal bd2 =new BigDecimal(st2);
        BigDecimal bignum3 = bd1.divide(bd2,0,BigDecimal.ROUND_DOWN);
        return  bignum3.floatValue();
    }

    //除法（四舍五入）
    public static  String  divisionString(String st1,String st2) {
        BigDecimal bd1 = new BigDecimal(st1);
        BigDecimal bd2 = new BigDecimal(st2);
        BigDecimal bignum3 = bd1.divide(bd2, 2, BigDecimal.ROUND_HALF_UP);
        return bignum3.setScale(2, BigDecimal.ROUND_HALF_UP).toString();
    }

    public static void main(String[] args) {
      BigDecimal s=  CalculatedValueUtil.division(new BigDecimal(8),new BigDecimal(0));
        System.out.println(s);


    }
}
